package day05;

import work.JDBCUtils;
import work.MyDatasource1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class MyDataTest {
    public static void main(String[] args) {
        //获取自定义的连接池对象
            MyDatasource1 ds = new MyDatasource1();
            // 初始化值
            Connection conn = null;
            ResultSet rs = null;
            PreparedStatement pst = null;
            try {
                // 根据连接池对象获取连接
                conn=ds.getConnection();
                String sql = "select * from USER ";
                // 获取发送sql的对象
                pst = conn.prepareStatement(sql);
                // 执行sql
                rs = pst.executeQuery();
                //处理结果
                while(rs.next())
                {
                    //取出数据
                    String id = rs.getString("id");
                    String name = rs.getString(2);
                    String chinese = rs.getString("chinese");
                    //输出
                    System.out.println(id+"==="+name+"----"+chinese);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally
            {
                //本题是用工具类JUBCUtils的release来进行close，所以动态代理getClass().getInterfaces()是错误的
                //.getInterfaces()只能获取直接实现的接口
                //动态代理将close方法进行拦截修改
                JDBCUtils.release(conn, pst, rs);
                //由于使用连接池的方法将连接对象返回给连接池，将close方法进行改写，但这样增加了学习成本
                //应该在connection接口的close方法上进行修改，应该使用装饰设计或动态代理。
//                ds.backPool(conn);
            }
        }
}
